package com.shujia

import scala.io.Source

object Demo20Implicit03 {
  // 隐式转换类
  implicit class MyRichInt(int: Int) {
    def myMax(i: Int): Int = {
      if (int > i) {
        int
      } else {
        i
      }
    }

    def myMin(i: Int): Int = {
      if (int < i) {
        int
      } else {
        i
      }
    }
  }

  /**
   * 通过implicit修饰的类，其构造方法中所接收的参数对应的类型
   * 该类型所有的变量即可自动获得类中所有的成员方法
   * @param path
   */
  implicit class MyStr(path:String){
    def getFile():List[String] = {
      Source.fromFile(path).getLines().toList
    }
  }

  def main(args: Array[String]): Unit = {
    // 手动创建对象进行调用
    val richInt: MyRichInt = new MyRichInt(10)
    println(richInt.myMax(100))
    println(richInt.myMin(100))


    println(10.myMax(100))
    println(10.myMin(100))

    new MyStr("scala/data/stu/students.txt").getFile().foreach(println)
    new MyStr("scala/data/stu/score.txt").getFile().foreach(println)
    new MyStr("scala/data/stu/subject.txt").getFile().foreach(println)

    "scala/data/stu/students.txt".getFile().foreach(println)
    "scala/data/stu/score.txt".getFile().foreach(println)
    "scala/data/stu/subject.txt".getFile().foreach(println)

  }
  
}
